/**
 * 监控系统类型定义
 * 
 * @author CKY Agent Platform Team
 * @version 1.0.0
 * @lastModified 2024-01-15
 */

// 系统指标接口
export interface SystemMetrics {
  /** 时间戳 */
  timestamp: string;
  /** CPU使用率 (%) */
  cpuUsage: number;
  /** 内存使用率 (%) */
  memoryUsage: number;
  /** 磁盘使用率 (%) */
  diskUsage: number;
  /** 网络输入速率 (KB/s) */
  networkIn: number;
  /** 网络输出速率 (KB/s) */
  networkOut: number;
  /** 活跃连接数 */
  activeConnections: number;
  /** 平均响应时间 (ms) */
  responseTime: number;
  /** 吞吐量 (req/s) */
  throughput: number;
}

// 告警信息接口
export interface AlertInfo {
  /** 告警ID */
  id: string;
  /** 告警类型 */
  type: 'error' | 'warning' | 'info';
  /** 告警标题 */
  title: string;
  /** 告警消息 */
  message: string;
  /** 时间戳 */
  timestamp: string;
  /** 告警状态 */
  status: 'active' | 'resolved';
  /** 告警严重程度 */
  severity: AlertSeverity;
}

// 告警严重程度
export type AlertSeverity = 'low' | 'medium' | 'high' | 'critical';

// 仪表板配置接口
export interface DashboardConfig {
  /** 刷新间隔 (毫秒) */
  refreshInterval: number;
  /** 启用的组件 */
  enabledWidgets: string[];
  /** 告警阈值 */
  alertThresholds: {
    /** CPU使用率阈值 (%) */
    cpu: number;
    /** 内存使用率阈值 (%) */
    memory: number;
    /** 磁盘使用率阈值 (%) */
    disk: number;
    /** 响应时间阈值 (ms) */
    responseTime: number;
  };
  /** 主题 */
  theme: 'light' | 'dark';
}

// 性能统计接口
export interface PerformanceStats {
  /** 平均CPU使用率 (%) */
  avgCpuUsage: number;
  /** 最大CPU使用率 (%) */
  maxCpuUsage: number;
  /** 平均内存使用率 (%) */
  avgMemoryUsage: number;
  /** 最大内存使用率 (%) */
  maxMemoryUsage: number;
  /** 平均响应时间 (ms) */
  avgResponseTime: number;
  /** 最大响应时间 (ms) */
  maxResponseTime: number;
  /** 总请求数 */
  totalRequests: number;
  /** 错误率 (%) */
  errorRate: number;
  /** 可用性 (%) */
  availability: number;
  /** 时间戳 */
  timestamp: string;
}

// 健康状态接口
export interface HealthStatus {
  /** 整体状态 */
  status: 'healthy' | 'warning' | 'critical';
  /** 组件状态 */
  components: {
    /** 数据库状态 */
    database: 'healthy' | 'unhealthy';
    /** 缓存状态 */
    cache: 'healthy' | 'unhealthy';
    /** 外部服务状态 */
    externalServices: 'healthy' | 'unhealthy';
    /** 消息队列状态 */
    messageQueue: 'healthy' | 'unhealthy';
  };
  /** 最后检查时间 */
  lastCheck: string;
}

// 时间范围类型
export type TimeRange = '5m' | '15m' | '1h' | '6h' | '24h' | '7d' | '30d';

// 指标类型
export type MetricType = 
  | 'cpu'
  | 'memory'
  | 'disk'
  | 'network'
  | 'connections'
  | 'responseTime'
  | 'throughput';

// 图表数据点接口
export interface ChartDataPoint {
  /** 时间戳 */
  timestamp: string;
  /** 值 */
  value: number;
  /** 标签 */
  label?: string;
}

// 图表配置接口
export interface ChartConfig {
  /** 图表类型 */
  type: 'line' | 'bar' | 'area' | 'pie';
  /** 标题 */
  title: string;
  /** 数据键 */
  dataKey: string;
  /** 颜色 */
  color?: string;
  /** 单位 */
  unit?: string;
  /** Y轴范围 */
  yAxisRange?: [number, number];
  /** 是否堆叠 */
  stacked?: boolean;
}

// 告警规则接口
export interface AlertRule {
  /** 规则ID */
  id: string;
  /** 规则名称 */
  name: string;
  /** 指标类型 */
  metric: MetricType;
  /** 阈值 */
  threshold: number;
  /** 比较操作符 */
  operator: 'greater_than' | 'less_than' | 'equals' | 'not_equals';
  /** 持续时间 */
  duration: string;
  /** 通知渠道 */
  notificationChannels: string[];
  /** 是否启用 */
  enabled: boolean;
  /** 创建时间 */
  createdAt: string;
  /** 更新时间 */
  updatedAt: string;
}

// 通知渠道接口
export interface NotificationChannel {
  /** 渠道ID */
  id: string;
  /** 渠道名称 */
  name: string;
  /** 渠道类型 */
  type: 'email' | 'webhook' | 'slack' | 'dingtalk' | 'wechat';
  /** 配置信息 */
  config: Record<string, any>;
  /** 是否启用 */
  enabled: boolean;
  /** 创建时间 */
  createdAt: string;
  /** 更新时间 */
  updatedAt: string;
}

// 导出配置接口
export interface ExportConfig {
  /** 时间范围 */
  timeRange: TimeRange;
  /** 导出格式 */
  format: 'json' | 'csv' | 'xlsx' | 'pdf';
  /** 包含的指标 */
  includeMetrics: MetricType[];
  /** 包含告警 */
  includeAlerts: boolean;
  /** 包含统计 */
  includeStats: boolean;
  /** 文件名 */
  fileName?: string;
}

// 监控面板接口
export interface DashboardPanel {
  /** 面板ID */
  id: string;
  /** 面板名称 */
  name: string;
  /** 面板描述 */
  description?: string;
  /** 图表配置 */
  charts: ChartConfig[];
  /** 布局配置 */
  layout: {
    x: number;
    y: number;
    width: number;
    height: number;
  };
  /** 刷新间隔 */
  refreshInterval?: number;
  /** 是否可见 */
  visible: boolean;
}

// 系统信息接口
export interface SystemInfo {
  /** 系统名称 */
  name: string;
  /** 版本 */
  version: string;
  /** 环境 */
  environment: 'development' | 'staging' | 'production';
  /** 启动时间 */
  startTime: string;
  /** 运行时间 */
  uptime: string;
  /** 操作系统 */
  os: {
    platform: string;
    version: string;
    arch: string;
  };
  /** 运行时信息 */
  runtime: {
    name: string;
    version: string;
    framework: string;
  };
  /** 硬件信息 */
  hardware: {
    cpu: {
      cores: number;
      model: string;
      frequency: number;
    };
    memory: {
      total: number;
      available: number;
      used: number;
    };
    disk: {
      total: number;
      available: number;
      used: number;
    };
  };
}

// 性能测试结果接口
export interface PerformanceTestResult {
  /** 测试ID */
  id: string;
  /** 测试名称 */
  name: string;
  /** 测试类型 */
  type: 'load' | 'stress' | 'spike' | 'endurance';
  /** 测试配置 */
  config: {
    /** 并发用户数 */
    concurrentUsers: number;
    /** 持续时间 */
    duration: number;
    /** 请求速率 */
    requestRate: number;
    /** 测试场景 */
    scenario: string;
  };
  /** 测试结果 */
  results: {
    /** 总请求数 */
    totalRequests: number;
    /** 成功请求数 */
    successfulRequests: number;
    /** 失败请求数 */
    failedRequests: number;
    /** 平均响应时间 */
    avgResponseTime: number;
    /** 最小响应时间 */
    minResponseTime: number;
    /** 最大响应时间 */
    maxResponseTime: number;
    /** 吞吐量 */
    throughput: number;
    /** 错误率 */
    errorRate: number;
    /** 90%响应时间 */
    p90ResponseTime: number;
    /** 95%响应时间 */
    p95ResponseTime: number;
    /** 99%响应时间 */
    p99ResponseTime: number;
  };
  /** 测试时间 */
  testTime: string;
  /** 测试状态 */
  status: 'running' | 'completed' | 'failed';
}

// 监控事件接口
export interface MonitoringEvent {
  /** 事件ID */
  id: string;
  /** 事件类型 */
  type: 'metric_alert' | 'system_event' | 'user_action' | 'deployment';
  /** 事件标题 */
  title: string;
  /** 事件描述 */
  description: string;
  /** 事件级别 */
  level: 'info' | 'warning' | 'error' | 'critical';
  /** 事件数据 */
  data: Record<string, any>;
  /** 事件时间 */
  timestamp: string;
  /** 来源 */
  source: string;
  /** 标签 */
  tags: string[];
}

// 监控报告接口
export interface MonitoringReport {
  /** 报告ID */
  id: string;
  /** 报告名称 */
  name: string;
  /** 报告类型 */
  type: 'daily' | 'weekly' | 'monthly' | 'custom';
  /** 报告期间 */
  period: {
    start: string;
    end: string;
  };
  /** 报告内容 */
  content: {
    /** 系统概览 */
    overview: {
      availability: number;
      avgResponseTime: number;
      totalRequests: number;
      errorRate: number;
    };
    /** 性能指标 */
    performanceMetrics: {
      cpu: PerformanceStats;
      memory: PerformanceStats;
      disk: PerformanceStats;
      network: PerformanceStats;
    };
    /** 告警汇总 */
    alertSummary: {
      total: number;
      critical: number;
      high: number;
      medium: number;
      low: number;
    };
    /** 趋势分析 */
    trends: {
      cpu: number;
      memory: number;
      responseTime: number;
      throughput: number;
    };
  };
  /** 生成时间 */
  generatedAt: string;
  /** 生成状态 */
  status: 'generating' | 'completed' | 'failed';
}